home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / dev / basic / PureBasic_Upd.lha / PureBasic_Update1.60 / PureBasic / Examples / Sources / ProtrackerReplay.pb < prev    next >
Encoding:
Text File  |  2000-09-10  |  5.0 KB  |  274 lines

  1. ;
  2. ; Protracker & sound module player...
  3. ;
  4. ;   (c) 2000 - Fantaisie Software
  5. ;
  6. ;
  7. ; 25/07/2000
  8. ;   First version
  9. ;
  10. ;
  11.  
  12. WbStartup()
  13.  
  14. InitWindow(10)
  15. InitTagList(20)
  16. InitGadget(20)
  17. InitScreen(10)
  18. InitRequester()
  19. InitAudio()
  20. InitPTModule(10)
  21.  
  22. If AllocateAudioChannels(15) = 0
  23.   PrintN("Audio not ready for sound replay...")
  24.   End
  25. EndIf
  26.  
  27. InitSound(10)
  28.  
  29.  
  30. FindScreen(0, "")
  31.  
  32. #GADGET_Rewind = 2
  33. #GADGET_Stop   = 3
  34. #GADGET_Pause  = 4
  35. #GADGET_Play   = 5
  36.  
  37.  
  38. If CreateGadgetList(1, ScreenID())
  39.  
  40.   HF = 20
  41.   HG = 20
  42.  
  43.   StringGadget(1, 100, HG, 280, HF, "Module :", "", 0)
  44.   ButtonGadget(6, 380, HG, 20, HF, "?", 0) : HG+HF+4 
  45.  
  46.   ButtonGadget(#GADGET_Rewind, 100, HG, 30, HF, "|<", 0)
  47.   ButtonGadget(#GADGET_Stop  , 140, HG, 30, HF, "S", 0)
  48.   ButtonGadget(#GADGET_Pause , 180, HG, 30, HF, "||", 0)
  49.   ButtonGadget(#GADGET_Play  , 220, HG, 30, HF, ">", 0) : HG+HF+4
  50.  
  51.   StringGadget(7, 100, HG, 280, HF, "Sound :", "", 0)
  52.   ButtonGadget(8, 380, HG, 20, HF, "?", 0) : HG+HF+4 
  53.  
  54.   Dim Choice.s(2)
  55.   Choice(0) = "On"
  56.   Choice(1) = "Off"
  57.  
  58.   CycleGadget ( 9, 100, HG,  60, HF, "Channel 1 :", Choice(), 0)
  59.   ButtonGadget(10, 170, HG, 100, HF, "Play sound", 0) : HG+HF+4
  60.  
  61.   Dim Filter.s(2)
  62.   Filter(0) = "Audio Filter"
  63.   Filter(1) = "No Filter"
  64.   OptionGadget(20, 280, HG, 100, HF*4, Filter(), 0)
  65.  
  66.   CycleGadget (11, 100, HG,  60, HF, "Channel 2 :", Choice(), 0)
  67.   ButtonGadget(12, 170, HG, 100, HF, "Play sound", 0) : HG+HF+4
  68.  
  69.   CycleGadget (13, 100, HG,  60, HF, "Channel 3 :", Choice(), 0)
  70.   ButtonGadget(14, 170, HG, 100, HF, "Play sound", 0) : HG+HF+4
  71.  
  72.   CycleGadget (15, 100, HG,  60, HF, "Channel 4 :", Choice(), 0)
  73.   ButtonGadget(16, 170, HG, 100, HF, "Play sound", 0) : HG+HF+4
  74. EndIf
  75.  
  76.  
  77. ChannelMask = 15
  78.  
  79. a$ = "PureBasic"
  80. ResetTagList(#WA_Title, a$)
  81. If OpenWindow(0, 100, 100, 410, 178, #WFLG_DRAGBAR | #WFLG_CLOSEGADGET | #WFLG_DEPTHGADGET, TagListID())
  82.  
  83.   BevelBox(WindowBorderLeft(), WindowBorderTop(), WindowInnerWidth(), WindowInnerHeight(), 0)
  84.  
  85.   AttachGadgetList(1, WindowID())
  86.  
  87.   For k=2 To 5
  88.     DisableGadget(k, 1)
  89.   Next
  90.  
  91.   DisableGadget(10, 1)
  92.   DisableGadget(12, 1)
  93.   DisableGadget(14, 1)
  94.   DisableGadget(16, 1)
  95.  
  96.   UseAsPTModuleChannels(ChannelMask)
  97.  
  98.   Repeat
  99.     Delay(1)
  100.  
  101.     IDCMP.l = WindowEvent()
  102.  
  103.     If IDCMP = #IDCMP_GADGETUP
  104.  
  105.       GadgetCode.l   = EventCode()
  106.       ChangeChannels = 0
  107.  
  108.       Select EventGadget()
  109.  
  110.  
  111.         Case#GADGET_Rewind
  112.  
  113.          
  114.  
  115.         Case #GADGET_Stop
  116.  
  117.           StopPTModule()
  118.           MOVE.w #15,$dff096 
  119.           Pause = 0
  120.  
  121.  
  122.         Case #GADGET_Pause
  123.          
  124.           If Pause = 0
  125.             PausePTModule()
  126.             MOVE.w #15,$dff096 
  127.             Pause = 1
  128.           EndIf
  129.  
  130.  
  131.         Case #GADGET_Play
  132.  
  133.           If Pause
  134.             ResumePTModule(0)
  135.             Pause = 0
  136.           Else
  137.             PlayPTModule(0)
  138.           EndIf
  139.  
  140.  
  141.         Case 6 ; Choose a Module
  142.  
  143.           Module$ = FileRequester(0)
  144.  
  145.           If Module$
  146.             SetStringText(1, Module$)
  147.             RefreshGadget(1)
  148.  
  149.             FreePTModule(0)
  150.  
  151.             CLR.l  d2
  152.           
  153.             If LoadPTModule(0, Module$)
  154.  
  155.               For k=2 To 5
  156.                 DisableGadget(k, 0)
  157.               Next
  158.             Else
  159.             
  160.             EndIf
  161.           EndIf
  162.  
  163.  
  164.         Case 8 ; Choose a Sound
  165.  
  166.           Sound$ = FileRequester(0)
  167.  
  168.           If Sound$
  169.             SetStringText(7, Sound$)
  170.             RefreshGadget(7)
  171.  
  172.             For k=0 to 3
  173.               LoadSound(k, Sound$)
  174.               SetSoundChannels(k, 1 LSL k)
  175.             Next
  176.           EndIf
  177.  
  178.  
  179.         Case 9 ; Channel 1: Enable/Disable
  180.  
  181.           If GadgetCode = 0
  182.             DisableGadget (10, 1)
  183.             ChannelMask | 1
  184.           Else
  185.             DisableGadget (10, 0)
  186.             ChannelMask & (2+4+8)
  187.           EndIf
  188.  
  189.           ChangeChannels = 1
  190.  
  191.  
  192.         Case 11 ; Channel 1: Enable/Disable
  193.  
  194.           If GadgetCode = 0
  195.             DisableGadget (12, 1)
  196.             ChannelMask | 2
  197.           Else
  198.             DisableGadget (12, 0)
  199.             ChannelMask & (1+4+8)
  200.           EndIf
  201.  
  202.           ChangeChannels = 1
  203.  
  204.  
  205.         Case 13 ; Channel 1: Enable/Disable
  206.  
  207.           If GadgetCode = 0
  208.             DisableGadget (14, 1)
  209.             ChannelMask | 4
  210.           Else
  211.             DisableGadget (14, 0)
  212.             ChannelMask & (1+2+8)
  213.           EndIf
  214.  
  215.           ChangeChannels = 1
  216.  
  217.  
  218.         Case 15
  219.  
  220.          If GadgetCode = 0
  221.            DisableGadget (16, 1)
  222.            ChannelMask | 8
  223.          Else
  224.            DisableGadget (16, 0)
  225.            ChannelMask & (1+2+4)
  226.          EndIf
  227.  
  228.          ChangeChannels = 1
  229.  
  230.  
  231.         Case 10
  232.           PlaySound(0, 1)
  233.  
  234.         Case 12
  235.           PlaySound(1, 1)
  236.  
  237.         Case 14
  238.           PlaySound(2, 1)
  239.  
  240.         Case 16
  241.           PlaySound(3, 1)
  242.  
  243.  
  244.         Case 20  ; OptionGadget
  245.           
  246.  
  247.       EndSelect
  248.  
  249.      
  250.       If ChangeChannels
  251.  
  252.         UseAsPTModuleChannels(ChannelMask)
  253.         MOVE.w ChannelMask,$dff096
  254.         UseAsSoundChannels   (15-ChannelMask)
  255.  
  256.       EndIf
  257.  
  258.     EndIf
  259.  
  260.     If IDCMP = #IDCMP_GADGETDOWN
  261.      
  262.       GadgetCode = EventCode()
  263.  
  264.       If EventGadget() = 20
  265.         SoundFilter(1-GadgetCode)
  266.       EndIf
  267.     EndIf
  268.  
  269.   Until IDCMP = #IDCMP_CLOSEWINDOW
  270.  
  271. EndIf
  272.  
  273. End
  274.